import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Ataque, esta clase es la que utiliza la clase animal para destruir a la clase tractor.
 * Es una clase abstracta.
 * @author Gabriela Alvarado 
 * @version mayo 2013
 */
public abstract class Ataque extends Actor
{

    /**
     * Todo el tiempo se esta moviendo en direccion a la derecha.
     */
    public void act() 
    {
        if (!this.dispara())
            this.move();

    }

    /**
     * Avanza 7 pixeles cada vez.
     */
    public void move()
    {   int posX = this.getX();
        if ( posX < 680) 
        {
            posX = posX + 7;
            setLocation( posX,this.getY());

        }

        else 
            getWorld().removeObject(this);
    }

    /**
     * Si encuentra un tractor, resta puntos a su resistencia y desaparece el ataque.
     */
    public boolean dispara()
    {   boolean b=false;
        Actor existeTractor=super.getOneObjectAtOffset(0,0,Tractor.class);
        Contador vidas;
        Object tractor;

        if(existeTractor!=null)
        {
            World mundo;
            mundo=super.getWorld();
            tractor= getOneIntersectingObject(Tractor.class);
            vidas= ((Tractor)tractor).vidas();
            mundo.removeObject(this);
            vidas.decrementa(this.restaVidas());
            b=true;

        }
        return b;
    }

    /**
     * Cada ataque resta distinta cantidad de puntos a la resistencia del tractor.
     */
    public abstract int restaVidas();

    
}
